yuroyoroさんの死霊にみちびかれるままsbtを入れてみたりする話



そもsbtってなんなのさ

判ってない。

→SimpleBuildToolの略。

で。

・最新版は一個前のstableを使ってビルドする

という事なので、導入するには一個前のビルドツールを落としてきて、

それを使って最新の環境をビルドする事になる。


最終的に出来上がるものは、

Scalaのプログラムをビルドする為のjarファイル


ビルドに使うツールとしての、直前のバージョンのsbtをDL

sbt-launch.jar



ビルドする対象一式をDL

git clone git://github.com/harrah/xsbt.git


ビルド用のsbtを使って、最新のsbtをコンパイルする。

、、、

んだけど、ぶっちゃけこの作業の必要性ってあんま無い。


どうしてもって言うなら止めないけど、macportsとかで最新のsbtが苦もなく手に入ったりするし。

うん。


どうしてもっていうなら、

sbt build-all とかでビルドが開始される。だけどまだやるなよ、



build-allは大体の場合、メモリエラーが出る。OutOfMemoryError。PermGen space関連。


これは、ただ単に色々デカすぎるものを一発でビルドしようとしている為。

次の2点で対応。

→ビルドに使用するsbt自体の設定を、少し弄ってみた。

-XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256m

→個別にビルド

publish-local, proguard,sxr,doc4構成なので、個別に

sbt publish-local とかやってあげれば、まだ平和に事が進む。



セットアップと試し

mkdir hello

cd hello

echo 'object Hi { def main(args: Array[String]) = println("Hi!") }' > hw.scala

sbt 

とかやると、初回であればいろんなコンポーネントを取得して来る。

で、

自分はエラーが出た。

[NOT FOUND  ] commons-logging#commons-logging;1.0.4!commons-logging.jar


無い、って言われるのだけれど、調べてみると、

http://blog.teksol.info/tags/scala

依存性解決に失敗してるケースがあるみたい。

実際には.ivy2.m2を削除すると正確に動く。

クリーンインストール前提の罠。


ちなみに問題のivy2とm2は、Jenkinsがらみで先に入ってたものっぽい。

フォルダだけ作ってた系だろうか。

環境再現がとりにくい、、、


取得するものがそれ以上なくなれば、REPLの状態になる。


[info] Set current project to default-cde796 (in build file:/Users/sassembla/test/hello/)

これは、現在のプロジェクトをフォルダ~の場所にセットしましたよって情報。

で、

> run

ビルドして起動する。

[info] Running Hi 

Hi!

[success] Total time: 1 s, completed 2011/12/25 11:03:08



TextMateと連携させてみる

自分はTextMate使いたいので、バンドルを探してみた。

下記に紹介があった。

http://www.sidewayscoding.com/2010/08/using-textmate-for-scala-development.html

バンドルをダウンロードして取得

git clone git://github.com/mads379/scala.tmbundle.git

出来たバンドルファイルを開くと、それだけでTextMateにインストールされる。

スクリーンショット 2011-12-25 11.10.19.png

これで、シンタックスハイライトが効く。

スクリーンショット 2011-12-25 11.11.31.png

この状態でRunさせようとしても、下記のようなエラーが出る。(まあブログの通りなの)

スクリーンショット 2011-12-25 11.12.52.png

SCALA_HOME in TextMate -> Preferences... -> Advanced -> Shell Variables を編集。

ッつー事なので、xsbtだと何処をさせば良いのやら。